package map;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class MapDemo1 {
    public static void main(String[] args) {
        Map<String,Integer> map = new LinkedHashMap<>();
        //HashMap<>()hashmap线程不安全，hashtable线程安全
        //hashmap的遍历和put顺序不一致

        //LinkedHashMap<>() 遍历时是和put顺序一致的


        /*
        注意，如果map的value类型是包装类，那么在接收是不要使用对应的基本类型
        避免因为自动拆箱导致的空指针异常
         */
        //int  value  = map.put("语文",99) 返回值为null 自动装箱会报错
        map.put("语文",92);
        map.put("数学",91);
        map.put("英语",94);
        map.put("物理",91);
        map.put("化学",93);
        Integer i = map.put("化学", 80);
        //map查找表中 key值是唯一的 put添加重复的key时
        //会返回 key原本对应的value的值 原来的值被替换
        System.out.println(i);

        System.out.println(map);
        //底层用散列表算法进行读取  查找很快
        Integer math = map.get("数学");
        System.out.println(math);

        //返回当前map中的元素个数。注：每组键值对算一个元素
        int size = map.size();
        System.out.println(size);

        //清空表
       /* map.clear();
        size = map.size();
        System.out.println(size);*/

        //删除
        Integer value = map.remove("物理");
        System.out.println("被删除的key对应的value是：" + value);

        //判断map查找表中是否有指定元素
        boolean contains = map.containsKey("物理");
        System.out.println("是否包含物理这个key：" + contains);


        boolean flag = map.containsValue("100");
        System.out.println("是否包含100这个value：" + flag);




    }
}
